26 research outputs found
Formal verification of pipelined microprocessors
Subject of this thesis is the formal verification of pipelined microprocessors.
This includes processors with state of the art schedulers, such as
the Tomasulo scheduler and speculation. In contrast to most of the literature,
we verify synthesizable design at gate level. Furthermore, we prove
both data consistency and liveness. We verify the proofs using the theorem
proving system PVS. We verify both in-order and out-of-order machines.
For verifying in-order machines, we extend the stall engine concept presented
in [MP00]. We describe and implement an algorithm that does the
transformation into a pipelined machine. We describe a generic machine
that supports speculating on arbitraty values. We formally verify proofs
for the Tomasulo scheduling algorithm with reorder buffer.Gegenstand dieser Dissertation ist die formale Verifikation von Mikroprozessoren
mit Pipeline. Dies beinhaltet auch Prozessoren mit aktuellen
Scheduling-Verfahren wie den Tomasulo Scheduler und spekulativer Ausfuehrung.
Im Gegensatz zu weiten Teilen der bestehenden Literatur fuehren
wir die Verifikation auf Gatter-Ebene durch. Des weitern beweisen wir
sowohl Datenkonsistenz als auch eine obere Schranke fuer die Ausfuehrungszeit.
Die Beweise werden mit dem Theorem Beweissystem PVS
verifiziert. Es werden sowohl in-order Maschinen als auch out-of-order
Maschinen verifiziert. Zur Verifikation der in-order Maschinen erweitern
wir die Stall Engine aus [MP00]. Wir beschreiben und Implementieren ein
Verfahren das die Transformation in die "pipelined machine\u27; durchfuehrt.
Wir beschreiben eine generische Maschine die Spekulation auf beliebige
Werte erlaubt. Wir verifizieren die Beweise fuer den Tomasulo Scheduler
mit Reorder Buffer
Formale Verifikation von Mikroprozessoren mit Pipeline
Subject of this thesis is the formal verification of pipelined microprocessors.
This includes processors with state of the art schedulers, such as
the Tomasulo scheduler and speculation. In contrast to most of the literature,
we verify synthesizable design at gate level. Furthermore, we prove
both data consistency and liveness. We verify the proofs using the theorem
proving system PVS. We verify both in-order and out-of-order machines.
For verifying in-order machines, we extend the stall engine concept presented
in [MP00]. We describe and implement an algorithm that does the
transformation into a pipelined machine. We describe a generic machine
that supports speculating on arbitraty values. We formally verify proofs
for the Tomasulo scheduling algorithm with reorder buffer.Gegenstand dieser Dissertation ist die formale Verifikation von Mikroprozessoren
mit Pipeline. Dies beinhaltet auch Prozessoren mit aktuellen
Scheduling-Verfahren wie den Tomasulo Scheduler und spekulativer Ausfuehrung.
Im Gegensatz zu weiten Teilen der bestehenden Literatur fuehren
wir die Verifikation auf Gatter-Ebene durch. Des weitern beweisen wir
sowohl Datenkonsistenz als auch eine obere Schranke fuer die Ausfuehrungszeit.
Die Beweise werden mit dem Theorem Beweissystem PVS
verifiziert. Es werden sowohl in-order Maschinen als auch out-of-order
Maschinen verifiziert. Zur Verifikation der in-order Maschinen erweitern
wir die Stall Engine aus [MP00]. Wir beschreiben und Implementieren ein
Verfahren das die Transformation in die "pipelined machine'; durchfuehrt.
Wir beschreiben eine generische Maschine die Spekulation auf beliebige
Werte erlaubt. Wir verifizieren die Beweise fuer den Tomasulo Scheduler
mit Reorder Buffer
Applying SMT Solvers to the Test Template Framework
The Test Template Framework (TTF) is a model-based testing method for the Z
notation. In the TTF, test cases are generated from test specifications, which
are predicates written in Z. In turn, the Z notation is based on first-order
logic with equality and Zermelo-Fraenkel set theory. In this way, a test case
is a witness satisfying a formula in that theory. Satisfiability Modulo Theory
(SMT) solvers are software tools that decide the satisfiability of arbitrary
formulas in a large number of built-in logical theories and their combination.
In this paper, we present the first results of applying two SMT solvers, Yices
and CVC3, as the engines to find test cases from TTF's test specifications. In
doing so, shallow embeddings of a significant portion of the Z notation into
the input languages of Yices and CVC3 are provided, given that they do not
directly support Zermelo-Fraenkel set theory as defined in Z. Finally, the
results of applying these embeddings to a number of test specifications of
eight cases studies are analysed.Comment: In Proceedings MBT 2012, arXiv:1202.582
Workshop Proceedings Proceedings Editors
Workshop on Property Verification for Software Components and Services lina.atlanstic.net/provecs This series of workshops aims at sharing experiments and research efforts on verification techniques and tools that are dedicated to software components and services; the hope and the common interest are the emergence during the forthcoming years, of common practices and standards for properties, techniques and tools for researchers and developers both in academia and industry. Aims Component-based software engineering and service-oriented architecture are intensively researched from various points of view: description languages, semantic models, implementation frameworks, property verification techniques, etc An ongoing challenge is the quality assessment of components and services by stating and verifying their properties. Appropriate techniques and tools are needed for this purpose. Moreover, the tools must scale up and be interoperable since components and services may come from different models and frameworks
Accurate Theorem Proving for Program Verification
Symbolic software verification engines such as Slam and ESC/Java often use automatic theorem provers to implement forms of symbolic simulation. The theorem provers that are used, such as Simplify, usually combine decision procedures for the theories of uninterpreted functions, linear arithmetic, and sometimes bit vectors using techniques proposed by Nelson-Oppen or Shostak. Programming language constructs such as pointers, structures and unions are not directly supported by the provers, and are often encoded imprecisely using axioms and uninterpreted functions. In this paper we describe a more direct and accurate approach towards providing symbolic infrastructure for program verification engines. We propose the use of a theorem prover called Cogent, which provides better accuracy for ANSI-C expressions with the possibility of nested logic quantifiers. The prover’s implementation is based on a machinelevel interpretation of expressions into propositional logic. Cogent’s translation allows the program verification tools to better reason about finite machine-level variables, bit operations, structures, unions, references, pointers and pointer arithmetic. This paper also provides experimental evidence that the proposed approach is practical when applied to industrial program verification